#这里可替换为你自己的执行程序，其他代码无需更改

APP_NAME=/app/monitor/ground-monitor-station-cg.jar
BASE_NAME="$(dirname $APP_NAME)"
#使用说明，用来提示输入参数
usage() {
    echo "Usage: sh robotcenter.sh [start|stop|restart|status]"
    exit 1
}

#检查程序是否在运行
is_exist(){
  pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
  #如果不存在返回1，存在返回0 
  if [[ "$pid" == "" ]]; then
    echo "$APP_NAME 未检测到运行进程"
    return 1;
  else
    return 0;
  fi
}

#启动方法
start(){
  is_exist
  if [ $? -eq 0 ]; then
    echo "${APP_NAME} 正在运行，进程ID=${pid}"
  else
    echo "${APP_NAME} 开始启动..."
    nohup java -jar \
    -XX:MetaspaceSize=1024m \
    -XX:MaxMetaspaceSize=1024m \
    -Xms8192m \
    -Xmx16384m -Xmn256m \
    -Xss512k \
    -XX:SurvivorRatio=8 \
    -XX:HeapDumpPath=$BASE_NAME \
    -XX:+UseConcMarkSweepGC \
    ${APP_NAME}  >/dev/null 2>&1 &
  fi
}

#停止方法
stop(){
  is_exist
  if [ $? -eq "0" ]; then
    kill -9 $pid
    echo "${APP_NAME} 已停止，进程ID=${pid}"
  else
    echo "${APP_NAME} 未启动"
  fi  
}

#输出运行状态
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} 正在运行，，进程ID=${pid}"
  else
    echo "${APP_NAME} 未运行"
  fi
}

#重启
restart(){
  stop
  sleep 5
  start
}

#根据输入参数，选择执行对应方法，不输入则执行使用说明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac
